package day_2022_1_to_2.day16;

//217. 存在重复元素
//给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false 。
//示例 1：
//输入：nums = [1,2,3,1]
//输出：true
//示例 2：
//输入：nums = [1,2,3,4]
//输出：false

import java.util.HashSet;
import java.util.Set;

public class Day13_1 {
    public static void main(String[] args) {
        int[] nums={1,2,3,1};
        System.out.println(containsDuplicate1(nums));
    }

    //1.0 java Set自带去重，如果去重后的长度小于原长度，则返回true
    public static boolean containsDuplicate(int[] nums) {
        Set<Integer> set=new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if(!set.add(nums[i])){
                return true;
            }
        }
        return false;
    }

    //2.0 较1更简洁
    public static boolean containsDuplicate1(int[] nums) {
        Set<Integer> set=new HashSet<>();
        for(int i:nums){
            set.add(i);
        }
        return set.size()==nums.length?false:true;
    }

    //下面方法超出时间限制
    public static boolean containsDuplicate2(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums.length; j++) {
                if(nums[i]==nums[j] && i!=j){
                    return true;
                }
            }
        }
        return false;
    }
}
